// 发送异步请求
export default function _promiseifyWxApi() {
  wx.requestAsync = function (params) {
    let { url, data, method, header } = params
    return new Promise((resolve, reject) => {
      wx.showLoading({
        title: '正在获取数据...',
      })
      // 对data进行 兼容：如果没有值，重置成空对象
      data = data || {}
      // 统一处理参数:
      // 1. 对参数中值为null undefined进行过滤
      // 2. 统一参数一些公共参数[接口可能是针对多端都使用的，所以需要在每个端调用接口时加上参数来区分]
      for (let prop in data) {
        if (data[prop] === undefined || data[prop] === null) {
          delete data[prop]
        }
      }
      // 对当前接口全部加上渠道标识 channel字段
      // data.channel = 'miniapp'
      wx.request({
        url: 'https://xcx.bibizhuoyou.com' + url,
        method: method || 'POST',
        data,
        header: {
          'auth-token': wx.getStorageSync('token') || '',
        },
        success: (res) => {
          // 网络正常返回，但是后台返回的数据未必是正常的
          // 200 204 206 301 302 304 305 400 404 403 405 500 501 502 503 504
          // 网络返回是正常 再看返回的接口业务状态码
          if (res.statusCode == 200 && res.data) {
            // 业务逻辑状态码也是正常的 200
            if (res.data.code == 0) {
              resolve(res.data)
            } else if (res.data.code == 888) {
              resolve(res.data)
              wx.showToast({
                title: '您还未登录',
                icon: 'none',
                success: () => {
                  wx.navigateTo({
                    url: '/pages/logIn/logIn',
                  })
                },
              })
            } else if (res.data.status === 404) {
              wx.showToast({
                title: '接口不存在',
                icon: 'none',
              })
              reject(res)
            } else {
              resolve(res.data)
              wx.showToast({
                title: res.data.msg,
                icon: 'none',
              })
            }
          }
        },
        fail: (err) => {
          reject(err)
        },
        complete: () => {
          wx.hideLoading()
        },
      })
    })
  }
}
